import time

print(time.localtime())
# time()返回当前时间的时间戳
print(time.time())

# 将时间戳转换为格林威治天文时间下的 struct_time，可选参数 secs 表示从 epoch 到现在的秒数，默认为当前时间
print(time.gmtime())

# ctime(secs) 相当于 asctime(localtime(secs))
print(time.ctime())

# 两个字符串的元组：第一个是本地非 DST 时区的名称，第二个是本地 DST 时区的名称
print(time.tzname)

# strftime(format[, t])	格式化日期，接收一个 struct_time 表示的时间，并返回以可读字符串表示的当地时间
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

import datetime

# 返回当地的当前日期
print(datetime.date.today())
# 根据给定的时间戮，返回本地日期
print('''0000000000000000000000''')
print(time.time())
print(datetime.date.fromtimestamp(time.time()))
# date 所能表示的最小日期
print(datetime.date.min)

# date 所能表示的最大日期
print(datetime.date.max)

td = datetime.date.today()
print(td)
# 生成一个新的日期对象，用参数指定的年，月，日代替原有对象中的属性
print(td.replace(year=2019, month=1, day=1))
# 返回日期对应的 struct_time 对象
print(td.timetuple())

# weekday()	返回一个整数代表星期几，星期一为 0，星期天为 6
print(td.weekday())

# isoweekday()	返回一个整数代表星期几，星期一为 1，星期天为 7
print(td.isoweekday())
# isocalendar()	返回格式为 (year，month，day) 的元组
print(td.isocalendar())
# isoformat()	返回格式如 YYYY-MM-DD 的字符串
print(td.isoformat())
# strftime(format)	返回自定义格式的字符串
print(td.strftime('%Y %m %d'))
# year	年
print(td.year)
# month	月
print(td.month)
# day	日
print(td.day)
print(" time 类")
t = datetime.time(10, 10, 10)
print(t)
# isoformat()	返回 HH:MM:SS 格式的字符串
print(t.isoformat())
# replace(hour, minute, second, microsecond, tzinfo, * fold=0)	创建一个新的时间对象，用参数指定的时、分、秒、微秒代替原有对象中的属性
print(t.replace(hour=9, minute=9))
# strftime(format)	返回自定义格式的字符串
print(t.strftime('%I:%M:%S %p'))
# hour	时
print(t.hour)
# minute	分
print(t.minute)
# second	秒
print(t.second)
# microsecond	微秒
print(t.microsecond)
# tzinfo	时区
print(t.tzinfo)
print("datetime 类----------------")
# today()	返回当地的当前时间
print(datetime.datetime.today())
# now(tz=None)	类似于 today()，可选参数 tz 可指定时区

print(datetime.datetime.now())
# utcnow()	返回当前 UTC 时间
print(datetime.datetime.utcnow())
# fromtimestamp(timestamp, tz=None)	根据时间戳返回对应时间

print(datetime.datetime.fromtimestamp(time.time()))
# utcfromtimestamp(timestamp)	根据时间戳返回对应 UTC 时间

print(datetime.datetime.utcfromtimestamp(time.time()))
# combine(date, time)	根据 date 和 time 返回对应时间
print(datetime.datetime.combine(datetime.date(2019, 12, 1), datetime.time(10, 10, 10)))


# 3 calendar 模块
# calendar 模块提供了很多可以处理日历的函数。
# 3.1 常用函数
# 方法	说明
import calendar
# setfirstweekday(weekday)	设置每一周的开始(0 表示星期一，6 表示星期天)
calendar.setfirstweekday(1)
# firstweekday()	返回当前设置的每星期的第一天的数值
print(calendar.firstweekday())
# isleap(year)	如果 year 是闰年则返回 True ,否则返回 False
print(calendar.isleap(2020))
# leapdays(y1, y2)	返回 y1 至 y2 （包含 y1 和 y2 ）之间的闰年的数量
print(calendar.leapdays(2001, 2020))
# weekday(year, month, day)	返回指定日期的星期值
print(calendar.weekday(2024, 4, 17))
# monthrange(year, month)	返回指定年份的指定月份第一天是星期几和这个月的天数
print(calendar.monthrange(2024, 4))
# month(theyear, themonth, w=0, l=0)	返回月份日历
print(calendar.month(2099, 4))
# prcal(year, w=0, l=0, c=6, m=3)	返回年份日历
print(calendar.prcal(2024))



# 3.3 TextCalendar 类
# TextCalendar 为 Calendar子类，用来生成纯文本日历。实例方法如下所示：
# 方法	说明
# formatmonth(theyear, themonth, w=0, l=0)	返回一个多行字符串来表示指定年、月的日历
from calendar import TextCalendar

tc = TextCalendar()
print(tc.formatmonth(2024, 4))

# formatyear(theyear, w=2, l=1, c=6, m=3)	返回一个 m 列日历，可选参数 w, l, 和 c 分别表示日期列数， 周的行数， 和月之间的间隔
print(tc.formatyear(2019))


print("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------")
# 3.4 HTMLCalendar类
# HTMLCalendar 类可以生成 HTML 日历。实例方法如下所示：
# 方法	说明
# formatmonth(theyear, themonth, withyear=True)	返回一个 HTML 表格作为指定年、月的日历
from calendar import HTMLCalendar

hc = HTMLCalendar()
print(hc.formatmonth(2024, 4))

# formatyear(theyear, width=3)	返回一个 HTML 表格作为指定年份的日历
print(hc.formatyear(2024))

# formatyearpage(theyear, width=3, css='calendar.css', encoding=None)	返回一个完整的 HTML 页面作为指定年份的日历
print(hc.formatyearpage(2024))